home *** CD-ROM | disk | FTP | other *** search
/ PC Users 8 / Cd Pc Users extra 8.iso / internet / browser / ariadna / data.2 / PROGRAM / CLASSES.ZIP / sun / applet / AriadnaViewer.class (.txt) next >
Encoding:
Java Class File  |  1996-08-22  |  13.1 KB  |  554 lines

  1. package sun.applet;
  2.  
  3. import java.applet.Applet;
  4. import java.applet.AppletContext;
  5. import java.applet.AudioClip;
  6. import java.awt.Component;
  7. import java.awt.Container;
  8. import java.awt.Dimension;
  9. import java.awt.Event;
  10. import java.awt.Image;
  11. import java.awt.Insets;
  12. import java.awt.Point;
  13. import java.awt.Toolkit;
  14. import java.awt.Window;
  15. import java.io.ByteArrayOutputStream;
  16. import java.io.File;
  17. import java.io.FileInputStream;
  18. import java.io.IOException;
  19. import java.io.InputStream;
  20. import java.io.PrintStream;
  21. import java.net.URL;
  22. import java.util.Enumeration;
  23. import java.util.Hashtable;
  24. import java.util.Properties;
  25. import java.util.Vector;
  26. import sun.awt.image.URLImageSource;
  27. import sun.awt.win32.UnborderedWindow;
  28.  
  29. public class AriadnaViewer extends UnborderedWindow implements AppletContext {
  30.    AriadnaViewerPanel panel;
  31.    URL urlToJump;
  32.    static boolean inited;
  33.    public static AriadnaViewer[] applets = new AriadnaViewer[10000];
  34.    public static int appletCount;
  35.    static Hashtable audioHash = new Hashtable();
  36.    static Hashtable imgHash = new Hashtable();
  37.    static Vector appletPanels = new Vector();
  38.    static Hashtable systemParam = new Hashtable();
  39.    static AppletProps props;
  40.    // $FF: renamed from: c int
  41.    static int field_0;
  42.  
  43.    public static void PrintDebug(String var0) {
  44.       NatAriadna.PrintDebug(var0);
  45.    }
  46.  
  47.    public AriadnaViewer() {
  48.       if (inited) {
  49.          init();
  50.       }
  51.    }
  52.  
  53.    public AriadnaViewer(int var1, int var2, URL var3, Hashtable var4) {
  54.       PrintDebug("I'm in AriadnaViewer()");
  55.       ((Container)this).add("Center", this.panel = new AriadnaViewerPanel(var3, var4));
  56.       this.panel.init();
  57.       this.panel.move(0, 0);
  58.       appletPanels.addElement(this.panel);
  59.       ((UnborderedWindow)this).move(NatAriadna.CURRENT_X_CRD, NatAriadna.CURRENT_Y_CRD);
  60.       ((Window)this).pack();
  61.       ((Window)this).show();
  62.       this.showStatus("starting applet...");
  63.       this.panel.sendEvent(1);
  64.       this.panel.sendEvent(2);
  65.       this.panel.sendEvent(3);
  66.       ((UnborderedWindow)this).aReshape(NatAriadna.CURRENT_X_CRD, NatAriadna.CURRENT_Y_CRD, this.panel.appletSize.width, this.panel.appletSize.height);
  67.       this.panel.move(NatAriadna.CURRENT_X_CRD, NatAriadna.CURRENT_Y_CRD);
  68.    }
  69.  
  70.    static synchronized AudioClip getAudioClipFromCache(URL var0) {
  71.       Object var1 = (AudioClip)audioHash.get(var0);
  72.       if (var1 == null) {
  73.          audioHash.put(var0, var1 = new AppletAudioClip(var0));
  74.       }
  75.  
  76.       return (AudioClip)var1;
  77.    }
  78.  
  79.    public AudioClip getAudioClip(URL var1) {
  80.       return getAudioClipFromCache(var1);
  81.    }
  82.  
  83.    static synchronized Image getImageFromHash(URL var0) {
  84.       Image var1 = (Image)imgHash.get(var0);
  85.       if (var1 == null) {
  86.          try {
  87.             imgHash.put(var0, var1 = Toolkit.getDefaultToolkit().createImage(new URLImageSource(var0)));
  88.          } catch (Exception var2) {
  89.          }
  90.       }
  91.  
  92.       return var1;
  93.    }
  94.  
  95.    public Image getImage(URL var1) {
  96.       return getImageFromHash(var1);
  97.    }
  98.  
  99.    public Applet getApplet(String var1) {
  100.       AppletSecurity var2 = (AppletSecurity)System.getSecurityManager();
  101.       var1 = var1.toLowerCase();
  102.       Enumeration var3 = appletPanels.elements();
  103.  
  104.       while(var3.hasMoreElements()) {
  105.          AppletPanel var4 = (AppletPanel)var3.nextElement();
  106.          String var5 = var4.getParameter("name");
  107.          if (var5 != null) {
  108.             var5 = var5.toLowerCase();
  109.          }
  110.  
  111.          if (var1.equals(var5) && var4.getDocumentBase().equals(this.panel.getDocumentBase())) {
  112.             try {
  113.                var2.checkConnect(this.panel.getCodeBase().getHost(), var4.getCodeBase().getHost());
  114.                return var4.applet;
  115.             } catch (SecurityException var6) {
  116.             }
  117.          }
  118.       }
  119.  
  120.       return null;
  121.    }
  122.  
  123.    public Enumeration getApplets() {
  124.       AppletSecurity var1 = (AppletSecurity)System.getSecurityManager();
  125.       Vector var2 = new Vector();
  126.       Enumeration var3 = appletPanels.elements();
  127.  
  128.       while(var3.hasMoreElements()) {
  129.          AppletPanel var4 = (AppletPanel)var3.nextElement();
  130.          if (var4.getDocumentBase().equals(this.panel.getDocumentBase())) {
  131.             try {
  132.                var1.checkConnect(this.panel.getCodeBase().getHost(), var4.getCodeBase().getHost());
  133.                var2.addElement(var4.applet);
  134.             } catch (SecurityException var5) {
  135.             }
  136.          }
  137.       }
  138.  
  139.       return var2.elements();
  140.    }
  141.  
  142.    public void showDocument(URL var1) {
  143.       if (this.urlToJump != var1) {
  144.          this.urlToJump = var1;
  145.          super.showDocument(var1);
  146.       }
  147.    }
  148.  
  149.    public void showDocument(URL var1, String var2) {
  150.    }
  151.  
  152.    public void showStatus(String var1) {
  153.       PrintDebug("Applet Status: " + var1);
  154.       if (var1 == "appletloader.loaded") {
  155.          var1 = "Java applet loaded...";
  156.       }
  157.  
  158.       if (var1 == "appletloader.inited") {
  159.          var1 = "Java applet inited...";
  160.       }
  161.  
  162.       if (var1 == "appletloader.started") {
  163.          var1 = "Java applet started.";
  164.       }
  165.  
  166.       ((UnborderedWindow)this).PrintToStatusBar(var1);
  167.    }
  168.  
  169.    static void printTag(PrintStream var0, Hashtable var1) {
  170.       var0.print("<applet");
  171.       String var2 = (String)var1.get("codebase");
  172.       if (var2 != null) {
  173.          var0.print(" codebase=\"" + var2 + "\"");
  174.       }
  175.  
  176.       var2 = (String)var1.get("code");
  177.       if (var2 == null) {
  178.          var2 = "applet.class";
  179.       }
  180.  
  181.       var0.print(" code=\"" + var2 + "\"");
  182.       var2 = (String)var1.get("width");
  183.       if (var2 == null) {
  184.          var2 = "150";
  185.       }
  186.  
  187.       var0.print(" width=" + var2);
  188.       var2 = (String)var1.get("height");
  189.       if (var2 == null) {
  190.          var2 = "100";
  191.       }
  192.  
  193.       var0.print(" height=" + var2);
  194.       var2 = (String)var1.get("name");
  195.       if (var2 != null) {
  196.          var0.print(" name=\"" + var2 + "\"");
  197.       }
  198.  
  199.       var0.println(">");
  200.       int var3 = var1.size();
  201.       String[] var4 = new String[var3];
  202.       var3 = 0;
  203.  
  204.       for(Enumeration var5 = var1.keys(); var5.hasMoreElements(); ++var3) {
  205.          String var6 = (String)var5.nextElement();
  206.  
  207.          int var7;
  208.          for(var7 = 0; var7 < var3 && var4[var7].compareTo(var6) < 0; ++var7) {
  209.          }
  210.  
  211.          System.arraycopy(var4, var7, var4, var7 + 1, var3 - var7);
  212.          var4[var7] = var6;
  213.       }
  214.  
  215.       for(int var13 = 0; var13 < var3; ++var13) {
  216.          String var14 = var4[var13];
  217.          if (systemParam.get(var14) == null) {
  218.             var0.println("<param name=" + var14 + " value=\"" + var1.get(var14) + "\">");
  219.          }
  220.       }
  221.  
  222.       var0.println("</applet>");
  223.    }
  224.  
  225.    public void updateAtts() {
  226.       Dimension var1 = this.panel.size();
  227.       Insets var2 = this.panel.insets();
  228.       this.panel.atts.put("width", (new Integer(var1.width - (var2.left + var2.right))).toString());
  229.       this.panel.atts.put("height", (new Integer(var1.height - (var2.top + var2.bottom))).toString());
  230.    }
  231.  
  232.    void appletRestart() {
  233.       this.panel.sendEvent(4);
  234.       this.panel.sendEvent(5);
  235.       this.panel.sendEvent(2);
  236.       this.panel.sendEvent(3);
  237.    }
  238.  
  239.    void appletReload() {
  240.       this.panel.sendEvent(4);
  241.       this.panel.sendEvent(5);
  242.       this.panel.sendEvent(0);
  243.       AppletPanel.flushClassLoader(this.panel.baseURL);
  244.       this.panel.sendEvent(1);
  245.       this.panel.sendEvent(2);
  246.       this.panel.sendEvent(3);
  247.    }
  248.  
  249.    void appletClone() {
  250.       Point var1 = ((Component)this).location();
  251.       this.updateAtts();
  252.       new AriadnaViewer(var1.x + 30, var1.y + 10, this.panel.documentURL, (Hashtable)this.panel.atts.clone());
  253.    }
  254.  
  255.    void appletTag() {
  256.       ByteArrayOutputStream var1 = new ByteArrayOutputStream();
  257.       this.updateAtts();
  258.       printTag(new PrintStream(var1), this.panel.atts);
  259.       this.showStatus("Tag shown");
  260.       Point var2 = ((Component)this).location();
  261.       new TextFrame(var2.x + 50, var2.y + 20, "Applet HTML Tag", var1.toString());
  262.    }
  263.  
  264.    void appletInfo() {
  265.       String var1 = this.panel.applet.getAppletInfo();
  266.       if (var1 == null) {
  267.          var1 = "-- no applet info --";
  268.       }
  269.  
  270.       var1 = var1 + "\n\n";
  271.       String[][] var2 = this.panel.applet.getParameterInfo();
  272.       if (var2 != null) {
  273.          for(int var3 = 0; var3 < var2.length; ++var3) {
  274.             var1 = var1 + var2[var3][0] + " -- " + var2[var3][1] + " -- " + var2[var3][2] + "\n";
  275.          }
  276.       } else {
  277.          var1 = var1 + "-- no parameter info --";
  278.       }
  279.  
  280.       Point var5 = ((Component)this).location();
  281.       new TextFrame(var5.x + 50, var5.y + 20, "Applet Info", var1);
  282.    }
  283.  
  284.    void appletEdit() {
  285.    }
  286.  
  287.    static synchronized void networkProperties() {
  288.       if (props == null) {
  289.          props = new AppletProps();
  290.       }
  291.  
  292.       props.show();
  293.    }
  294.  
  295.    void appletStart() {
  296.       this.panel.sendEvent(3);
  297.    }
  298.  
  299.    void appletStop() {
  300.       this.panel.sendEvent(4);
  301.    }
  302.  
  303.    void appletClose() {
  304.       this.panel.sendEvent(4);
  305.       this.panel.sendEvent(5);
  306.       this.panel.sendEvent(0);
  307.       this.panel.sendEvent(6);
  308.       appletPanels.removeElement(this.panel);
  309.       ((Window)this).dispose();
  310.    }
  311.  
  312.    void appletQuit() {
  313.       System.exit(0);
  314.    }
  315.  
  316.    public boolean handleEvent(Event var1) {
  317.       switch (var1.id) {
  318.          case 201:
  319.             this.appletClose();
  320.             return true;
  321.          case 203:
  322.             this.appletStop();
  323.             return true;
  324.          case 204:
  325.             this.appletStart();
  326.             return true;
  327.          case 503:
  328.          case 504:
  329.          case 505:
  330.          case 506:
  331.             return super.handleEvent(var1);
  332.          case 51234:
  333.             ((Component)this).resize(((Container)this).preferredSize());
  334.             ((Container)this).validate();
  335.             return true;
  336.          default:
  337.             return super.handleEvent(var1);
  338.       }
  339.    }
  340.  
  341.    public static void init() {
  342.       Properties var0 = new Properties(System.getProperties());
  343.       ((Hashtable)var0).put("acl.read", "+");
  344.       ((Hashtable)var0).put("acl.read.default", "");
  345.       ((Hashtable)var0).put("acl.write", "+");
  346.       ((Hashtable)var0).put("acl.write.default", "");
  347.       ((Hashtable)var0).put("browser", "sun.applet.AppletViewer");
  348.       ((Hashtable)var0).put("browser.version", "1.05");
  349.       ((Hashtable)var0).put("browser.vendor", "Sun Microsystems Inc.");
  350.       ((Hashtable)var0).put("http.agent", "JDK/1.0");
  351.       ((Hashtable)var0).put("firewallSet", "true");
  352.       ((Hashtable)var0).put("firewallHost", "sunweb.ebay");
  353.       ((Hashtable)var0).put("firewallPort", "80");
  354.       ((Hashtable)var0).put("package.restrict.access.sun", "true");
  355.       ((Hashtable)var0).put("package.restrict.access.netscape", "true");
  356.       ((Hashtable)var0).put("package.restrict.definition.java", "true");
  357.       ((Hashtable)var0).put("package.restrict.definition.sun", "true");
  358.       ((Hashtable)var0).put("package.restrict.definition.netscape", "true");
  359.       ((Hashtable)var0).put("java.version.applet", "true");
  360.       ((Hashtable)var0).put("java.vendor.applet", "true");
  361.       ((Hashtable)var0).put("java.vendor.url.applet", "true");
  362.       ((Hashtable)var0).put("java.class.version.applet", "true");
  363.       ((Hashtable)var0).put("os.name.applet", "true");
  364.       ((Hashtable)var0).put("os.version.applet", "true");
  365.       ((Hashtable)var0).put("os.arch.applet", "true");
  366.       ((Hashtable)var0).put("file.separator.applet", "true");
  367.       ((Hashtable)var0).put("path.separator.applet", "true");
  368.       ((Hashtable)var0).put("line.separator.applet", "true");
  369.       var0 = new Properties(var0);
  370.  
  371.       try {
  372.          FileInputStream var1 = new FileInputStream(System.getProperty("user.home") + File.separator + ".hotjava" + File.separator + "properties");
  373.          var0.load(var1);
  374.          var1.close();
  375.       } catch (Exception var2) {
  376.          System.out.println("[no properties loaded, using defaults]");
  377.       }
  378.  
  379.       System.setProperties(var0);
  380.       System.setSecurityManager(new AppletSecurity());
  381.    }
  382.  
  383.    static void skipSpace(InputStream var0) throws IOException {
  384.       while(field_0 >= 0 && (field_0 == 32 || field_0 == 9 || field_0 == 10 || field_0 == 13)) {
  385.          field_0 = var0.read();
  386.       }
  387.  
  388.    }
  389.  
  390.    static String scanIdentifier(InputStream var0) throws IOException {
  391.       StringBuffer var1 = new StringBuffer();
  392.  
  393.       while(true) {
  394.          while(field_0 >= 97 && field_0 <= 122) {
  395.             var1.append((char)field_0);
  396.             field_0 = var0.read();
  397.          }
  398.  
  399.          if (field_0 < 65 || field_0 > 90) {
  400.             if (field_0 < 48 || field_0 > 57) {
  401.                return var1.toString();
  402.             }
  403.  
  404.             var1.append((char)field_0);
  405.             field_0 = var0.read();
  406.          } else {
  407.             var1.append((char)(97 + (field_0 - 65)));
  408.             field_0 = var0.read();
  409.          }
  410.       }
  411.    }
  412.  
  413.    static Hashtable scanTag(InputStream var0) throws IOException {
  414.       Hashtable var1 = new Hashtable();
  415.       skipSpace(var0);
  416.  
  417.       while(field_0 >= 0 && field_0 != 62) {
  418.          String var2 = scanIdentifier(var0);
  419.          String var3 = "";
  420.          skipSpace(var0);
  421.          if (field_0 == 61) {
  422.             int var4 = -1;
  423.             field_0 = var0.read();
  424.             skipSpace(var0);
  425.             if (field_0 == 39 || field_0 == 34) {
  426.                var4 = field_0;
  427.                field_0 = var0.read();
  428.             }
  429.  
  430.             StringBuffer var5;
  431.             for(var5 = new StringBuffer(); field_0 > 0 && (var4 < 0 && field_0 != 32 && field_0 != 9 && field_0 != 10 && field_0 != 13 && field_0 != 62 || var4 >= 0 && field_0 != var4); field_0 = var0.read()) {
  432.                var5.append((char)field_0);
  433.             }
  434.  
  435.             if (field_0 == var4) {
  436.                field_0 = var0.read();
  437.             }
  438.  
  439.             skipSpace(var0);
  440.             var3 = var5.toString();
  441.          }
  442.  
  443.          System.out.println("PUT " + var2 + " = '" + var3 + "'");
  444.          var1.put(var2, var3);
  445.          skipSpace(var0);
  446.       }
  447.  
  448.       return var1;
  449.    }
  450.  
  451.    static void parse(URL var0, int var1, int var2, int var3) throws IOException {
  452.       InputStream var4 = var0.openStream();
  453.       Hashtable var5 = null;
  454.       field_0 = var4.read();
  455.  
  456.       while(field_0 >= 0) {
  457.          if (field_0 == 60) {
  458.             field_0 = var4.read();
  459.             if (field_0 == 47) {
  460.                field_0 = var4.read();
  461.                String var6 = scanIdentifier(var4);
  462.                if (var6.equals("applet")) {
  463.                   if (var5 != null) {
  464.                      appletCount = var1;
  465.                      applets[appletCount] = new AriadnaViewer(var2, var3, var0, var5);
  466.                      return;
  467.                   }
  468.  
  469.                   var5 = null;
  470.                }
  471.             } else {
  472.                String var10 = scanIdentifier(var4);
  473.                if (var10.equals("param")) {
  474.                   Hashtable var7 = scanTag(var4);
  475.                   String var8 = (String)var7.get("name");
  476.                   if (var8 == null) {
  477.                      System.out.println("Warning: <param name=... value=...> tag requires name attribute.");
  478.                   } else {
  479.                      String var9 = (String)var7.get("value");
  480.                      if (var9 == null) {
  481.                         System.out.println("Warning: <param name=... value=...> tag requires value attribute.");
  482.                      } else if (var5 != null) {
  483.                         var5.put(var8.toLowerCase(), var9);
  484.                      } else {
  485.                         System.out.println("Warning: <param> tag outside <applet> ... </applet>.");
  486.                      }
  487.                   }
  488.                } else if (var10.equals("applet")) {
  489.                   var5 = scanTag(var4);
  490.                   if (var5.get("code") == null) {
  491.                      System.out.println("Warning: <applet> tag requires code attribute.");
  492.                      var5 = null;
  493.                   } else if (var5.get("width") == null) {
  494.                      System.out.println("Warning: <applet> tag requires width attribute.");
  495.                      var5 = null;
  496.                   } else if (var5.get("height") == null) {
  497.                      System.out.println("Warning: <applet> tag requires height attribute.");
  498.                      var5 = null;
  499.                   }
  500.                } else if (var10.equals("app")) {
  501.                   System.out.println("Warning: <app> tag no longer supported, use <applet> instead:");
  502.                   Hashtable var13 = scanTag(var4);
  503.                   var10 = (String)var13.get("class");
  504.                   if (var10 != null) {
  505.                      var13.remove("class");
  506.                      var13.put("code", var10 + ".class");
  507.                   }
  508.  
  509.                   var10 = (String)var13.get("src");
  510.                   if (var10 != null) {
  511.                      var13.remove("src");
  512.                      var13.put("codebase", var10);
  513.                   }
  514.  
  515.                   if (var13.get("width") == null) {
  516.                      var13.put("width", "100");
  517.                   }
  518.  
  519.                   if (var13.get("height") == null) {
  520.                      var13.put("height", "100");
  521.                   }
  522.  
  523.                   printTag(System.out, var13);
  524.                   System.out.println();
  525.                }
  526.             }
  527.          } else {
  528.             field_0 = var4.read();
  529.          }
  530.       }
  531.  
  532.       var4.close();
  533.    }
  534.  
  535.    static void usage() {
  536.       System.out.println("use: appletviewer [-debug] url|file ...");
  537.    }
  538.  
  539.    protected void showAppletStatus(String var1) {
  540.       ((UnborderedWindow)this).PrintToStatusBar(var1);
  541.    }
  542.  
  543.    static {
  544.       systemParam.put("codebase", "codebase");
  545.       systemParam.put("code", "code");
  546.       systemParam.put("alt", "alt");
  547.       systemParam.put("width", "width");
  548.       systemParam.put("height", "height");
  549.       systemParam.put("align", "align");
  550.       systemParam.put("vspace", "vspace");
  551.       systemParam.put("hspace", "hspace");
  552.    }
  553. }
  554.